package ar.fi.uba.celdas.interfaces.ambiente;

import java.util.Collection;

import ar.fi.uba.celdas.interfaces.bc.Sensor;

public interface IInfoRobot {
	/**
	 * @return una copia del estado actual del robot.
	 */
	Collection<Sensor> getEstado();
	
	/**
	 * 
	 * @return el estado final deseado de cada sensor contenido en la coleccion 
	 * pueden no se todos (en principio sería solo los sensores posición en X y posición en Y
	 */
	Collection<Sensor> getObjetivo();
	
	Collection<Sensor> getPosicionActual();
	
	/**
	 * @return true si la última lista de acciones ejecutadas 
	 * se ejecutaron exitosamente , si no se pudieron realizar todas,
	 * devuelve false. 
	 */
	boolean ultimasAccionesExitosas();
	
	/**
	 * 
	 * @return coleccion de todas las acciones ejecutables por el robot
	 */
	Collection<IAccion> getAccionesDisponibles(); 
	
	/**
	 * 
	 * @return coleccion de todas las acciones posibles de ejecutar segun el estado actual
	 */
	Collection<Collection<IAccion>> getAccionesPosibles();
	
	/**
	 * @return máximo  valor posible del sensor
	 */
	int getMaxValor(Sensor sensor);
	
	/**
	 * @return mínimo valor posible del sensor
	 */
	int getMinValor(Sensor sensor);
}
